

using System;

namespace PolePosition.v3.EntityFactory
{
    /// <summary>
    /// Defines the members of a DistributionMeterNote Factory, which operates on DistributionMeterNote Entities.
    /// </summary>
	/// <remarks>
	/// <para>Initial Generation Date: Saturday, February 14, 2009</para>
	/// <para>
	/// Contains methods that manipulate <see cref="Classes.Entities.DistributionMeterNoteEntity" /> objects.
	/// It also takes care of activities associated with the context of the system,
	/// such as database connections and interaction with other objects. There exists one Factory for 
	/// every type of Entity; this allows the user to manipulate Entities without having to worry about
	/// the details associated with a specific type of Entity.
	/// </para>
	/// <para>The Factory is the center of the action. It is in charge of loading Entities (and Entity 
	/// Collections) from the database, updating, saving, and deleting them, as well as of the 
	/// interactions with other objects that may take place while performing these operations.
	/// </para>
	/// <para>Three methods (and their overloads) alone are necessary to make use of the Factory: 
	/// <c>Save()</c>, <c>GetEntity()</c> and <c>GetCollection()</c>. The <c>Save()</c> method relies on the
	/// "metadata properties" of the individual Entities (see the <see cref="Classes.Entities.DistributionMeterNoteEntity" />
	/// class for more) to determine what to do with them. In addition, when it's time to execute the 
	/// operations against the database, the Factory relies on a set of stored procedures that exist for 
	/// each type of Entity as well. These factors effectively reduce the Factory's complexity and create 
	/// layers of abstraction that make it flexible and simple to use.
	/// </para>
	/// <para>The <c>GetEntity()</c> method can be used to obtain an Entity loaded with data from an existing record.
	/// In order to do this, a new Entity must be created containing the values that are known from the desired
	/// Entity. The new Entity's values will then serve as parameters to the query (executed by a stored 
	/// procedure) which will select the matching record from the database. The <c>GetCollection()</c> method 
	/// works in a similar way, except that it returns a group of matching Entities.
	/// </para>
	/// <para>The Factory class also defines a set of events that are fired by these methods at certain points during
	/// their execution (see how any of the <c>Save()</c>, <c>GetEntity()</c> or <c>GetCollection()</c> methods work).
	/// The Factory itself subscribes to these events in its static constructor and provides appropriate handlers (note that
	/// the static constructor and the handlers will not be present in Factories that are not supposed to deal with
	/// Child Collections). The main purpose of these events and event handlers is to allow the saving and retrieving 
	/// of Child Collection Entities without causing concurrency violations in the database.
	/// For more on Child Collections, see the documentation for the <see cref="Classes.Entities.DistributionMeterNoteEntity" />.
	/// </para>
	///</remarks>
	public sealed partial class DistributionMeterNoteFactory
	{

		// custom code here
		/// <summary>Allows custom code to be executed with the Factory's constructor. This method is called
		/// from within the Factory's static constructor.</summary>
		/// <remarks>Code for this method (if any) can be inserted after the code generation tool is run. Note also that
		/// the Factory's static constructor may not be present for this type of Entity, so this will not run. See the 
		/// documentation for the <see cref="Classes.Factories.DistributionMeterNoteFactory" /> for more.</remarks>
		static private void CustomConstructor()
		{
			
		}

	}
	
}

	